package com.atguigu.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.atguigu.dao.TravelItemDao;
import com.atguigu.entity.PageResult;
import com.atguigu.pojo.TravelItem;
import com.atguigu.service.TravelItemService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author LEO
 * @Date 2021年12月16日 9:30
 */
@Service(interfaceClass=TravelItemService.class)  //发布服务，注册到zk中心
@Transactional
public class TravelItemServiceImpl implements TravelItemService {

    @Autowired
    private TravelItemDao travelItemDao;

    //新增自由行
    @Override
    public void add(TravelItem travelItem) {
        travelItemDao.add(travelItem);
    }

    //分页查询
    @Override
    public PageResult findPage(Integer currentPage, Integer pageSize, String queryString) {
        // 分页插件
        //开启分页功能  limit (currentPage-1)*pageSize,pageSize
        PageHelper.startPage(currentPage,pageSize);
        Page page= travelItemDao.findPage(queryString);   // 返回当前页数据
        return  new PageResult(page.getTotal(),page.getResult());   //1. 总记录数  2.分页数据集合
    }


    //删除自由行
    @Override
    public void delete(Integer id) {
        // 查自由行关联表中是否存在关联数据，如果存在，则抛异常，不进行删除
        long count= travelItemDao.findCountByTravleitem(id);
        if (count>0){
            //有关联数据
            throw new RuntimeException("删除自由行失败，因为存在关联关系，请删除关联关系");
        }
        travelItemDao.delete(id);
    }


    @Override
    public TravelItem findById(Integer id) {
        return travelItemDao.findById(id);
    }

    //修改
    @Override
    public void edit(TravelItem travelItem) {
        travelItemDao.edit(travelItem);
    }

    // 查询所有自由行列表
    @Override
    public List<TravelItem> findAll() {
        return travelItemDao.findAll();
    }
}
